package com.jiajia.study;


/**
 * 列表接口，定义列表含有的方法
 * @param <E>
 */
public interface List<E> {
    /**
     * 元素没有找到索引
     */
    public static final int ELEMENT_NOT_FOUNT = -1;

    /**
     * 元素的数量
     * @return  数量
     */
    public int size();

    /**
     * 是否为空
     * @return  结果
     */
    public boolean isEmpty();

    /**
     * 是否包含某个元素
     * @param element   元素
     * @return          结果
     */
    public boolean contains(E element);

    /**
     * 添加元素
     * @param element   添加的元素
     */
    public void add(E element);

    /**
     * 获取某个位置的元素
     * @param index     索引位置
     * @return          元素
     */
    public E get(int index);

    /**
     * 设置 index 位置的元素
     * @param index     索引位置
     * @param element   元素
     * @return          原始位置的元素
     */
    public E set(int index,E element);

    /**
     * 往 index 位置添加元素
     * @param index     index 位置
     * @param element   元素
     */
    public void add(int index,E element);

    /**
     * 删除 index 位置的元素
     * @param index     index位置
     * @return          被删除的元素
     */
    public E remove(int index);

    /**
     * 查找元素在列表中的位置
     * @param element   元素
     * @return          位置
     */
    public int indexOf(E element);

    /**
     * 清空数据, size = 0,访问不到数据
     * 语义正确，从外面看来就是空的，具体实现就是我们自己的实现，可以很灵活
     */
    public void clear();

}
